package com.zhixi.pattern.important.builderpattern.operation;

import com.zhixi.pattern.important.builderpattern.operation.build.BMWBuilder;
import com.zhixi.pattern.important.builderpattern.operation.build.BenzBuilder;
import com.zhixi.pattern.important.builderpattern.operation.model.BMWModel;
import com.zhixi.pattern.important.builderpattern.operation.model.BenzModel;

import java.util.ArrayList;

/**
 * 组装车辆
 *
 * @作者 ShuHaoNan
 * @邮箱 shuhaonan1@gmail.com
 * @时间 2020/11/15 16:03
 */
public class Director {

    private ArrayList<String> sequence = new ArrayList<>();
    private BenzBuilder benzBuilder = new BenzBuilder();
    private BMWBuilder bmwBuilder = new BMWBuilder();

    /**
     * 奔驰A系列
     * @return 奔驰A系列模型
     */
    public BenzModel getABenzModel() {
        /* 清除数组中元素 */
        this.sequence.clear();
        /* 启动 */
        this.sequence.add("start");
        /* 停止 */
        this.sequence.add("stop");
        this.benzBuilder.setSequence(this.sequence);
        /* 返回Benz的模型 */
        return (BenzModel) this.benzBuilder.getCarModel();
    }

    /**
     * 奔驰B系列
     * @return 奔驰B系列模型
     */
    public BenzModel getBBenzModel() {
        /* 清除数组中元素 */
        this.sequence.clear();
        /* 启动 */
        this.sequence.add("start");
        /* 引擎 */
        this.sequence.add("engineBoom");
        /* 喇嘛 */
        this.sequence.add("alarm");
        /* 停止 */
        this.sequence.add("stop");
        this.benzBuilder.setSequence(this.sequence);
        /* 返回Benz的模型 */
        return (BenzModel) this.benzBuilder.getCarModel();
    }

    /**
     * 宝马A系列
     * @return 宝马A系列模型
     */
    public BMWModel getABMWModel() {
        /* 清除数组中元素 */
        this.sequence.clear();
        /* 启动 */
        this.sequence.add("start");
        this.bmwBuilder.setSequence(this.sequence);
        /* 返回Benz的模型 */
        return (BMWModel) this.bmwBuilder.getCarModel();
    }

    /**
     * 宝马B系列
     * @return 宝马B系列模型
     */
    public BMWModel getBBMWModel() {
        /* 清除数组中元素 */
        this.sequence.clear();
        /* 引擎 */
        this.sequence.add("engineBoom");
        /* 喇嘛 */
        this.sequence.add("alarm");
        /* 停止 */
        this.sequence.add("stop");
        this.bmwBuilder.setSequence(this.sequence);
        /* 返回Benz的模型 */
        return (BMWModel) this.bmwBuilder.getCarModel();
    }


}
